package com.global.dao;

import java.util.List;

import com.global.model.DataSourceX;
import com.global.model.QueryParameterDefinition;

public interface QueryParameterDefinitionDao extends GenericDao<QueryParameterDefinition, Long> {

	/**
	 * 保存QueryParameterDefinition对象
	 * @param queryParameterDf
	 * @return 持久化QueryParameterDefinition对象
	 */
	QueryParameterDefinition saveQueryParameterDefinition(QueryParameterDefinition queryParameterDf);
	
	/**
	 * 批量保存QueryParameterDefinition对象
	 * @param queryParameterDfList QueryParameterDefinition对象清单
	 */
	void saveBatchQueryParameterDefinitions(List<QueryParameterDefinition> queryParameterDfList);
	
	/**
	 * 批量保存QueryParameterDefinition对象
	 * @param saveList 新增（更新）的QueryParameterDefinition对象清单
	 * @param deleteList 删除的QueryParameterDefinition对象清单
	 */
	void saveBatchQueryParameterDefinitions(List<QueryParameterDefinition> saveList, List<QueryParameterDefinition> deleteList);
	
	/**
	 * 根据数据源以及参数名称返回唯一的参数定义
	 * @param dataSourceX 参数定义所属的数据源
	 * @param parameterName 参数名称
	 * @return 返回参数定义
	 */
	QueryParameterDefinition getQueryParameterDefinition(DataSourceX dataSourceX, String parameterName);
	
	/**
	 * 根据数据源以及参数名称返回唯一的参数定义
	 * @param dataSourceXId 参数定义所属的数据源Id
	 * @param parameterName 参数名称
	 * @return 返回参数定义
	 */
	QueryParameterDefinition getQueryParameterDefinition(Long dataSourceXId, String parameterName);
	
	/**
	 * 从DB中检索出某个数据源中的参数定义清单
	 * <br/><span style="color:red">并且按照显示顺序进行升序排列</span>
	 * @param dataSourceX 数据源
	 * @return 参数定义清单
	 */
	List<QueryParameterDefinition> getQueryParameterDefinitionList(DataSourceX dataSourceX);
	
	/**
	 * 从DB中检索出某个数据源中的参数定义清单
	 * <br/><span style="color:red">并且按照显示顺序进行升序排列</span>
	 * @param dataSourceXId  数据源Id
	 * @return 参数定义清单
	 */
	public List<QueryParameterDefinition> getQueryParameterDefinitionList(Long dataSourceXId);
	
	/**
	 * 从DB中检索出某个数据源中的固定参数定义清单
	 * <br/><span style="color:red">并且按照显示顺序进行升序排列</span>
	 * @param dataSourceX 数据源
	 * @return 参数定义清单
	 */
	List<QueryParameterDefinition> getFixedQueryParameterDefinitionList(DataSourceX dataSourceX);
	
	/**
	 * 从DB中检索出某个数据源中的固定参数定义清单
	 * <br/><span style="color:red">并且按照显示顺序进行升序排列</span>
	 * @param dataSourceXId  数据源Id
	 * @return 参数定义清单
	 */
	public List<QueryParameterDefinition> getFixedQueryParameterDefinitionList(Long dataSourceXId);
	
	/**
	 * 从DB中检索出某个数据源中的过滤参数定义清单
	 * <br/><span style="color:red">并且按照显示顺序进行升序排列</span>
	 * @param dataSourceX 数据源
	 * @return 参数定义清单
	 */
	List<QueryParameterDefinition> getFilterQueryParameterDefinitionList(DataSourceX dataSourceX);
	
	/**
	 * 从DB中检索出某个数据源中的过滤参数定义清单
	 * <br/><span style="color:red">并且按照显示顺序进行升序排列</span>
	 * @param dataSourceXId  数据源Id
	 * @return 参数定义清单
	 */
	public List<QueryParameterDefinition> getFilterQueryParameterDefinitionList(Long dataSourceXId);
	
	/**
	 * 删除某个参数定义
	 */
	void deleteQueryParameterDefinition(QueryParameterDefinition QueryParameterDf);
	
	/**
	 * 批量删除参数定义
	 * @param dataSourceXColumnList
	 */
	public void deleteBatchQueryParameterDefinitions(List<QueryParameterDefinition> queryParameterDefinitionList);
}
